#ifndef AGENTW_SB_PLANNING
#define AGENTW_SB_PLANNING

class SBPNode {
public:
	FeatureTerm *m_state;
	FeatureTerm *m_op;
	SBPNode *m_parent;
	float m_h,m_c;

	SBPNode(FeatureTerm *state,FeatureTerm *op,SBPNode *parent,float h,float c) {
		m_state = state;
		m_op = op;
		m_parent = parent;
		m_h = h;
		m_c = c;
	} // SBPNode

	~SBPNode() {
		if (m_state!=0) delete m_state;
		if (m_op!=0) delete m_op;
	} // ~SBPNode
};

List<FeatureTerm> *IDSearchBasedPlan(List<FeatureTerm> *objects,FeatureTerm *initialState,FeatureTerm *goalState,FTKBase *domain_model,Ontology *o);
List<FeatureTerm> *HSearchBasedPlan(List<FeatureTerm> *objects,FeatureTerm *initialState,FeatureTerm *goalState,FTKBase *domain_model,Ontology *o);

#endif
